package com.zyb.warehouse.mapper;

import com.zyb.warehouse.dto.Page;
import com.zyb.warehouse.entity.Role;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * Description:角色持久层接口
 */
@Mapper
public interface RoleMapper {

    /**
     * 查询所有角色信息
     *
     * @return
     */
    @Select("select * from role where role_state=1")
    List<Role> selectAllRole();

    /**
     * 根据角色名字查询角色ID
     *
     * @param roleName
     * @return
     */
    @Select("select role_id from role where role_name=#{roleName}")
    Integer selectRoleIdByRoleName(String roleName);

    /**
     * 条件查询角色总记录数
     *
     * @param role
     * @return
     */
    Integer selectRoleCount(Role role);

    /**
     * 条件分页查询
     *
     * @param page
     * @param role
     * @return
     */
    List<Role> pageSelect(@Param("page") Page page, @Param("role") Role role);

    /**
     * 根据角色名称或角色代码查询角色是否存在
     *
     * @param roleName
     * @param roleCode
     * @return
     */
    Role selectRoleByRoleNameOrRoleCode(String roleName, String roleCode);

    /**
     * 添加角色
     *
     * @param role
     * @return
     */
    Integer insertRole(Role role);

    /**
     * 修改角色
     *
     * @param role
     * @return
     */
    Integer updateRole(Role role);

    /**
     * 删除角色
     *
     * @param roleId
     * @return
     */
    @Delete("delete from role where role_id=#{roleId}")
    Integer deleteRole(Integer roleId);

}
